#!/usr/bin/env node

/**
 * 开发环境本地tunnel脚本
 * 用于将本地服务暴露到公网，方便飞书回调测试
 */

const localtunnel = require('localtunnel');
const config = require('../config');

const PORT = config.server.port || 3000;

console.log('🚀 启动本地tunnel服务...');
console.log(`📍 本地端口: ${PORT}`);
console.log('⏳ 正在创建公网隧道...\n');

const tunnel = localtunnel(PORT, {
  subdomain: process.env.TUNNEL_SUBDOMAIN || undefined, // 可选：指定子域名
}, (err, tunnel) => {
  if (err) {
    console.error('❌ 创建tunnel失败:', err.message);
    process.exit(1);
  }

  const publicUrl = tunnel.url;
  
  console.log('✅ Tunnel创建成功！');
  console.log('========================================');
  console.log('🌐 公网访问地址:', publicUrl);
  console.log('📍 本地服务地址:', `http://localhost:${PORT}`);
  console.log('========================================\n');
  
  console.log('📝 配置说明:');
  console.log('1. 登录飞书开发者后台: https://open.feishu.cn/');
  console.log('2. 进入你的应用 -> 事件订阅');
  console.log('3. 配置请求网址:', `${publicUrl}/webhook/feishu`);
  console.log('4. 配置Encrypt Key:', config.feishu.encryptKey || '你的加密密钥');
  console.log('5. 配置Verification Token:', config.feishu.verificationToken || '你的验证令牌');
  console.log('\n💡 提示: 保持此窗口运行，tunnel才会保持连接');
  console.log('⚠️  注意: 每次重启tunnel，URL可能会变化，需要重新配置\n');
});

// 处理tunnel关闭
tunnel.on('close', () => {
  console.log('\n⚠️  Tunnel连接已关闭');
  console.log('💡 提示: 如果这是意外关闭，请检查网络连接');
});

// 处理错误
tunnel.on('error', (err) => {
  console.error('❌ Tunnel错误:', err.message);
});

// 优雅退出
process.on('SIGINT', () => {
  console.log('\n\n🛑 正在关闭tunnel...');
  tunnel.close(() => {
    console.log('✅ Tunnel已关闭');
    process.exit(0);
  });
});

process.on('SIGTERM', () => {
  tunnel.close(() => {
    process.exit(0);
  });
});

